//
//  SPCard.h
//  ShandongPoker
//
//  Created by Developer on 2025-01-08.
//  Copyright © 2025 ShandongPoker. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "../../Core/Utils/SPConstants.h"

NS_ASSUME_NONNULL_BEGIN

/**
 * 扑克牌模型
 * 表示一张扑克牌，包含花色和点数
 */
@interface SPCard : NSObject <NSCopying>

/// 花色
@property (nonatomic, assign, readonly) SPCardSuit suit;

/// 点数
@property (nonatomic, assign, readonly) SPCardRank rank;

/// 牌的数值（用于比较大小）
@property (nonatomic, assign, readonly) NSInteger value;

/// 是否为红色牌（红桃或方块）
@property (nonatomic, assign, readonly) BOOL isRed;

/// 是否为黑色牌（黑桃或梅花）
@property (nonatomic, assign, readonly) BOOL isBlack;

/**
 * 初始化扑克牌
 * @param suit 花色
 * @param rank 点数
 * @return 扑克牌实例
 */
- (instancetype)initWithSuit:(SPCardSuit)suit rank:(SPCardRank)rank;

/**
 * 获取牌的显示名称
 * @return 显示名称，如"红桃A"
 */
- (NSString *)displayName;

/**
 * 获取牌的简短名称
 * @return 简短名称，如"AH"
 */
- (NSString *)shortName;

/**
 * 获取花色符号
 * @return 花色符号，如"♠"
 */
- (NSString *)suitSymbol;

/**
 * 获取点数符号
 * @return 点数符号，如"A"
 */
- (NSString *)rankSymbol;

/**
 * 获取牌面图片
 * @return 牌面图片
 */
- (UIImage * _Nullable)cardImage;

/**
 * 获取牌背图片
 * @return 牌背图片
 */
+ (UIImage * _Nullable)cardBackImage;

/**
 * 比较两张牌的大小
 * @param otherCard 另一张牌
 * @return 比较结果
 */
- (NSComparisonResult)compare:(SPCard *)otherCard;

@end

NS_ASSUME_NONNULL_END